#include "BinNode_travLevel.hpp"
#include "BinNode_travPre.hpp"
#include "BinNode_travIn.hpp"
#include "BinNode_travPost.hpp"

template <typename T>
template <class VST>
void BinNode<T>::travPre(VST &visit) {
	switch(rand() % 3) {
	case 1:
		travPre_I1(this, visit);
		break;
	case 2:
		travPre_I2(this, visit);
		break;
	default:
		travPre_R(this, visit);
	}

}

template <typename T>
template <class VST>
void BinNode<T>::travIn(VST &visit) {
	switch(rand() % 4) {
	case 1:
		travIn_I1(this, visit);
		break;
	case 2:
		travIn_I2(this, visit);
		break;
	case 3:
		travIn_I3(this, visit);
		break;
	default:
		travIn_R(this, visit);
	}
}

template <typename T>
template <class VST>
void BinNode<T>::travPost(VST &visit) {
	switch(rand() % 3) {
	case 1:
		travPost_I1(this, visit);
		break;
	case 2:
		travPost_I2(this, visit);
		break;
	default:
		travPost_R(this, visit);
	}
}